package adapter;

import java.io.PrintWriter;

import models.Table;
import akka.actor.*;

/**
 * Klasa przetwarzajaca komunikaty wysylane przez klienta w czasie urzytkowania lobby.
 * @author Xsar
 */
public class ClientSTaskController {
  /**
   * Referencja do klasy glowownej programu, table.
   */
  private ActorRef client;
  private ActorRef table;
  /**
   * Strumien wyjscia.
   */
  private PrintWriter out;
  /**
   * Ostatni komunikat wyslany przez urzytkownika.
   */
  private String lastTask;

  /**
   * Konstruktor klasy.
   * @param table Referencja do glownego programu. 
   * @param out Referencja do strumienia wyjscia powiazanego z serwerem.
   */
  ClientSTaskController(ActorRef table, ActorRef client, PrintWriter out) {
    this.table=table;
    this.client=client;
    this.out=out;
  }
  /**
   * Wyslanie komunikatu S_REFRESH do serwera.
   */
  public void S_REFRESH() {
    lastTask="S_REFRESH";
    out.println("S_REFRESH");
  }
  /**
   * Wyslanie komunikatu S_JOIN do serwera.
   * @param ID_GAME ID gry do ktorej chcemy dolaczyc.
   */
  public void S_JOIN(String task) {
	lastTask=task;
    out.println(task);
  }
  /**
   * Wyslanie komunikatu G_NEWGAME do serwera.
   * @param numberOfPlayers Maksymalna liczba graczy ktora bedzie grala.
   * @param numberOfBot Liczba botow ktore beda graly.
   * @param ifHostPlay Czy host gra.
   */
  public void S_NEWGAME(String line) {
	lastTask=line;
    out.println(line);
  }
  /**
   * Wyslanie komunikatu S_DISCONNECT do serwera.
   */
  public void S_DISCONNECT() {
    lastTask="G_DISCONNECT";
    out.println("G_DISCONNECT");
  }
  /**
   * Pobranie ostatniego komunikatu wyslaniego przez klienta.
   * @return Ostatni komunikat.
   */
  public String getLastTask() {
    return lastTask;
  }
}
